The increasing importance of multimedia applications in embedded and general purpose computing environments has led to the development of multimedia extensions in most commercial microprocessors. At the core of these extensions is support for vector, or single-instruction-multiple-data (“SIMD”) operations on superwords, that is, aggregate data objects larger than a machine word. SIMD units are still most effectively exploited by using SIMD data-types in the source code and restructure algorithms accordingly. Compilers have evolved in order to efficiently exploit the unique features of multimedia extensions, specifically through use of the Superword Level Parallelism (“SLP”) approach.
SLP is a compiler transformation that searches inside a basic block of user code in an attempt to find sets of scalar, isomorphic statements that can be packed and replaced by a SIMD statement expecting improvement in the performance of the user code. SLP can be defined as short SIMD parallelism, or basic block simdization, in which the source and result operands of a SIMD operation are packed in an adjacent storage location.